//
// Created by 先通明 on 24/08/2018.
//
#include <stdbool.h>
#include <stdlib.h>
#define MAXSTACK 100

#ifndef CPRIMERPRACTICE_STACK_H
#define CPRIMERPRACTICE_STACK_H
typedef int Item;
typedef struct node {
    Item item;
    struct node *prevous;
} Node;

typedef struct stack {
    Node *top;
    int size;
} Stack;
/**
 * 初始化一个空栈
 * @param ps 要初始化的栈
 */
void initalizeStack(Stack * ps);

/**
 *
 * @param stack
 * @return 栈是已满
 */
bool stackIsFull(const Stack * ps);/**
 *
 * @param stack
 * @return 栈是为空
 */
bool stackIsEmpty(const Stack * ps);
/**
 *
 * @param ps
 * @return 当前栈中的数据数量
 */
int stackItemCount(const Stack * ps);

/**
 * 入栈
 * @param item 添加的数据
 * @param ps
 * @return
 */
bool pushStack(Item item,Stack * ps);

/**
 * 出栈,将出栈值拷贝到pi
 * @param pi
 * @param ps
 * @return
 */
bool popStack(Item* pi,Stack * ps);

/**
 * 清空队列
 * @param ps
 */
void emptyStack(Stack * ps);
#endif; //CPRIMERPRACTICE_STACK_H
